﻿Imports ValorYReferencia.Figuras
Imports System.Windows.Forms

Namespace Facturacion
    Module PruebaFacturacion

        Sub Main()
            Dim lavandina As New Producto()
            lavandina.Nombre = "Lavandina"
            lavandina.Precio = 15

            Dim jabonEnPolvo As New Producto()
            jabonEnPolvo.Nombre = "Jabon en polvo"
            jabonEnPolvo.Precio = 50

            Dim factura As New Factura()
            factura.FechaDeEmision = New Date(2000, 1, 1)
            factura.FechaDeVencimiento = New Date(2000, 2, 1)

            Dim detalle1 As New DetalleDeFactura()
            detalle1.Cantidad = 5
            detalle1.Producto = lavandina

            factura.Detalles.Add(detalle1)

            Dim detalle2 As New DetalleDeFactura()
            detalle2.Cantidad = 2
            detalle2.Producto = jabonEnPolvo

            factura.Detalles.Add(detalle2)

            Dim factura2 As New Factura()
            factura2.FechaDeEmision = New Date(2010, 1, 1)
            factura2.FechaDeVencimiento = New Date(2010, 2, 1)

            Dim detalleA As New DetalleDeFactura()
            detalleA.Cantidad = 1
            detalleA.Producto = lavandina

            factura2.Detalles.Add(detalleA)

            Dim detalleB As New DetalleDeFactura()
            detalleB.Cantidad = 1
            detalleB.Producto = jabonEnPolvo

            factura2.Detalles.Add(detalleB)

            Dim cliente As New Cliente()
            cliente.Nombre = "Martin"
            cliente.Apellido = "Caballero"
            cliente.Facturas.AddRange({factura, factura2})

            Console.WriteLine("Total factura 1: " & factura.ObtenerTotal())
            Console.WriteLine("Total factura 2: " & factura2.ObtenerTotal())
            Console.WriteLine("Total historico del cliente: " & cliente.ObtenerConsumoHistorico())
            Console.WriteLine("Total historico del cliente con facturas del año 2010: " & cliente.ObtenerConsumoDeFacturas(AddressOf EsFacturaDel2010))
            Console.WriteLine("Total historico del cliente con facturas del año 2010: " & cliente.ObtenerConsumoDeFacturas(Function(f As Factura) f.ObtenerTotal() > 100))

            Console.ReadKey()
        End Sub

        Function EsFacturaDel2010(ByVal factura As Factura) As Boolean
            Return factura.FechaDeEmision.Year = 2010
        End Function

    End Module
End Namespace
